/*!
 * instrumentation.ts: Next.js 服务器监控性能、跟踪错误来源，初始化操作
 * 该文件在 Node.js 和 Edge 运行时均可运行，但是，您可以使用它 process.env.NEXT_RUNTIME 来定位特定的运行时。
 */
import type { Instrumentation } from 'next';

export async function register() {
  // init your favorite observability provider SDK
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    const { init } = await import('src/lib/init');
    // 初始化项目配置
    init();
  }
}

// This function can be marked `async` if using `await` inside
export const onRequestError: Instrumentation.onRequestError = (err, request, context) => {
  // report the error in production
  if (process.env.NODE_ENV === 'production' && process.env.NEXT_RUNTIME === 'nodejs') {
    const dataPack = JSON.stringify({
      message: (err as Error).message,
      request,
      context,
    });
    console.log('Error occurred:', dataPack);
    // async send the error to your observability provider
    // await fetch('https://.../report-error', {
    //   method: 'POST',
    //   body: dataPack,
    //   headers: {
    //     'Content-Type': 'application/json',
    //   },
    // });
  }
};
